TCGA BRCA
GSEA
GSEA HALLMARK
library(clusterProfiler)
hallmark <- msigdbr::msigdbr(species = "Homo sapiens", category = "H") %>%
dplyr::select(gs_name, gene_symbol)
perform_GSEA <- function(res, ref, pvalueCutoff = 1) {
ranking <- function(res) {
df <- res$log2FoldChange
names(df) <- rownames(res)
df <- sort(df, decreasing = TRUE)
return(df)
}
ranked.res <- ranking(res)
set.seed(123)
x <- clusterProfiler::GSEA(geneList = ranked.res,
TERM2GENE = ref,
pvalueCutoff = pvalueCutoff,
pAdjustMethod = "BH",
verbose = TRUE,
seed = TRUE)
result <- x@result %>% arrange(desc(NES))
result <- result[, c('NES', 'pvalue', 'p.adjust', 'core_enrichment', 'ID')]
return(result)
}
# Application
gsea.res = perform_GSEA(res = res, ref = hallmark) filtered_gsea = gsea.res %>% mutate(sig= ifelse(pvalue <= 0.05,"p value <= 0.05", "p value > 0.05"))
# Modified GSEA NES plot
gsea_nes_plot =function(gsea.res, title, fontsize.x = 5, fontsize.y = 6){
gsea.res %>% ggplot(aes(reorder(ID, NES), NES)) +
geom_col(aes(fill=sig), color="grey1", size=0.2) +
coord_flip() +
labs(x="Pathway", y="Normalized Enrichment Score",
title= "GSEA") +
theme_classic() +
# scale_fill_gradient(low = '#FF0000', high = '#E5E7E9') +
scale_fill_manual(values = c("#FF0000","grey88")) +
theme(axis.text.x= element_text(size=fontsize.x, face = 'bold'),
axis.text.y= element_text(size=fontsize.y, face = 'bold'),
axis.title =element_text(size=10)) +ggtitle(title)
}GSEA NES plot
cond1 = "Normal Tissue"
cond2 = "Tumor"
t= paste0("DEGs from ",cond2, " / ", cond1 )
gsea_nes_plot(filtered_gsea, title = t, fontsize.x = 8, fontsize.y = 8)GSEA NES plot (filtered)
filtered_gsea = gsea.res %>% mutate(sig= ifelse(p.adjust <= 0.05,"p value <= 0.05", "p value > 0.05"))
filtered_gsea = filtered_gsea %>% filter(sig == "p value <= 0.05")
# filtered_gsea = filtered_gsea %>% distinct(core_enrichment, .keep_all = T)
t= paste0("DEGs from ",cond2, " / ", cond1 )
gsea_nes_plot(filtered_gsea, title = t, fontsize.x = 8, fontsize.y = 8)GSEA KEGG
library(clusterProfiler)
kegg <- msigdbr::msigdbr(species = "Homo sapiens", subcategory = "CP:KEGG") %>%
dplyr::select(gs_name, gene_symbol)
perform_GSEA <- function(res, ref, pvalueCutoff = 1) {
ranking <- function(res) {
df <- res$log2FoldChange
names(df) <- rownames(res)
df <- sort(df, decreasing = TRUE)
return(df)
}
ranked.res <- ranking(res)
set.seed(123)
x <- clusterProfiler::GSEA(geneList = ranked.res,
TERM2GENE = ref,
pvalueCutoff = pvalueCutoff,
pAdjustMethod = "BH",
verbose = TRUE,
seed = TRUE)
result <- x@result %>% arrange(desc(NES))
# result <- result[, c('NES', 'pvalue', 'p.adjust', 'core_enrichment', 'ID')]
return(result)
}
# Application
gsea.res = perform_GSEA(res = res, ref = kegg) KEGG NES plot
cond1 = "Normal Tissue"
cond2 = "Tumor"
t= paste0("DEGs from ",cond2, " / ", cond1 )
filtered_gsea = gsea.res %>% mutate(sig= ifelse(p.adjust <= 0.05,"p value <= 0.05", "p value > 0.05"))
# filtered_gsea = filtered_gsea %>% filter(sig == "p value <= 0.05")
# filtered_gsea = filtered_gsea %>% distinct(core_enrichment, .keep_all = T)
gsea_nes_plot(filtered_gsea, title = t, fontsize.x = 8, fontsize.y = 6)KEGG NES plot (filtered)
filtered_gsea = gsea.res %>% mutate(sig= ifelse(p.adjust <= 0.05,"p value <= 0.05", "p value > 0.05"))
filtered_gsea = filtered_gsea %>% filter(sig == "p value <= 0.05")
# filtered_gsea = filtered_gsea %>% distinct(core_enrichment, .keep_all = T)
t= paste0("DEGs from ",cond2, " / ", cond1 )
gsea_nes_plot(filtered_gsea, title = t, fontsize.x = 8, fontsize.y = 8)